/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author 18263016
 */
package temporizador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import javax.swing.Timer;
import java.io.Serializable;
       
public class Temporizador extends Observable implements Serializable,ActionListener{
    
    private Timer trTemporizador;
    private int horas,minutos,segundos;
    
    
    public Temporizador(){
        horas=0;
        minutos=0;
        segundos=0;
        trTemporizador= new Timer(1000,this);
    }

    public int getHoras() {
        return horas;
    }

    public void setHoras(int horas) {
        this.horas = horas;
        setChanged();
        notifyObservers(getCadenaTemporizador());
    }

    public int getMinutos() {
        return minutos;
    }

    public void setMinutos(int minutos) {
        this.minutos = minutos;
        setChanged();
        notifyObservers(getCadenaTemporizador());
    }

    public int getSegundos() {
        return segundos;
    }

    public void setSegundos(int segundos) {
        this.segundos = segundos;
        setChanged();
        notifyObservers(getCadenaTemporizador());
    }

    public Timer getTrTemporizador() {
        return trTemporizador;
    }

    public void setTrTemporizador(Timer trTemporizador) {
        this.trTemporizador = trTemporizador;
    }
    
    
    
    public void iniciar(){
        trTemporizador.start();
    }
    
    public void parar(){
        trTemporizador.stop();
    }
    
    public void asignarEspera(int milisegundos){
        trTemporizador.setDelay(milisegundos);
    }
    
    public void reiniciar(){
        trTemporizador.stop();
        horas=0;
        minutos=0;
        segundos=0;
        trTemporizador.start();
    }
    
    public void inicializar(){
    	trTemporizador.stop();
        horas=0;
        minutos=0;
        segundos=0;
    }

	@Override
	public void actionPerformed(ActionEvent e) {
		++segundos;
        if (segundos==60)
        {
            segundos=0;
            ++minutos;

            if (minutos==60)
            {
                minutos=0;
                ++horas;
            }
        }

  
        setChanged();
        notifyObservers(getCadenaTemporizador());
		
	}
    
    private String getCadenaTemporizador(){
    	return String.format("%1$02d:%2$02d:%3$02d", horas,minutos,segundos);
    }

  
}
